|
1
|
|
|
class NotifierError extends Error { |
|
2
|
|
|
constructor(type, context, originalError) { |
|
3
|
2 |
|
super(type.message(context)); |
|
4
|
2 |
|
this.name = 'NotifierError'; |
|
5
|
2 |
|
this.type = type.type; |
|
6
|
2 |
|
this.errorCode = type.code; |
|
7
|
2 |
|
this.message = type.message(context); |
|
8
|
2 |
|
this.serverMessage = this.message; |
|
9
|
2 |
|
this.statusCode = Math.floor(this.errorCode / 1000); |
|
10
|
2 |
|
if (originalError) { |
|
11
|
|
|
this.originalError = originalError; |
|
12
|
|
|
this.serverMessage = `${this.message}: ${this.originalError.message}`; |
|
13
|
|
|
} |
|
14
|
|
|
} |
|
15
|
|
|
} |
|
16
|
|
|
|
|
17
|
1 |
|
NotifierError.Types = Object.freeze({ |
|
18
|
|
|
BAD_REQUEST: { code: 400000, message: () => '잘못된 요청입니다.' }, |
|
19
|
2 |
|
BAD_REQUEST_INVALID: { code: 400100, message: context => `요청이 유효하지 않습니다: ${context.message}` }, |
|
20
|
|
|
AUTH: { code: 401000, message: () => '로그인이 실패하였습니다.' }, |
|
21
|
|
|
AUTH_TOKEN: { code: 401100, message: () => '인증 토큰에 문제가 있습니다.' }, |
|
22
|
|
|
AUTH_TOKEN_INVALID: { code: 401110, message: () => '인증 토큰이 유효하지 않습니다.' }, |
|
23
|
|
|
AUTH_TOKEN_EXPIRED: { code: 401120, message: () => '인증 토큰이 만료되었습니다.' }, |
|
24
|
|
|
AUTH_USER: { code: 401200, message: () => '사용자 인증에 문제가 발생했습니다.' }, |
|
25
|
|
|
AUTH_USER_NOT_EXIST: { code: 401210, message: context => `${context.username}은 존재하지 않는 사용자 입니다.` }, |
|
26
|
|
|
AUTH_MISSING_PARAMS: { code: 401220, message: () => '사용자 이름 또는 패스워드를 입력하지 않았습니다.' }, |
|
27
|
2 |
|
AUTH_INVALID_PARAMS: { code: 401230, message: () => '사용자 이름 또는 패스워드가 맞지 않습니다.' }, |
|
28
|
|
|
FORBIDDEN: { code: 403000, message: () => '허가되지 않았습니다.' }, |
|
29
|
|
|
FORBIDDEN_IP_ADDRESS: { code: 403100, message: context => `사용자의 IP(${context.remoteAddress})는 허가되지 않았습니다.` }, |
|
30
|
|
|
FORBIDDEN_OPERATION: { code: 403200, message: () => '허가되지 않은 작업입니다.' }, |
|
31
|
|
|
INVALID_PARAMS: { code: 400000, message: () => '파라미터가 잘못되었습니다.' }, |
|
32
|
|
|
SERVER: { code: 500000, message: context => `서버 에러가 발생했습니다${context.message ? `: ${context.message}` : '.'}` }, |
|
33
|
|
|
DB: { code: 500100, message: () => 'DB 에러가 발생했습니다.' }, |
|
34
|
|
|
}); |
|
35
|
|
|
|
|
36
|
1 |
|
Object.keys(NotifierError.Types).forEach((type) => { |
|
37
|
16 |
|
NotifierError.Types[type].type = type; |
|
38
|
|
|
}); |
|
39
|
|
|
|
|
40
|
|
|
module.exports = NotifierError; |
|
41
|
|
|
|